import axios from 'axios'
import router from '@/router'

const SERVICE_URL = import.meta.env.VITE_HTTP_URL

// 创建一个 axios 实例
export const axiosInstance = axios.create({
    baseURL: SERVICE_URL, // 你的后端 API 地址
    timeout: 50000, // 设置请求超时时间（5秒）
})

// 请求之前拦截
axiosInstance.interceptors.request.use(
    function (config) {
        //请求前携带token
        const token = localStorage.getItem('token')
        config.headers.Authorization = 'Bearer ' + token
        return config
    },
    function (error) {
        return Promise.reject(error)
    },
)

// 响应之后拦截
axiosInstance.interceptors.response.use(
    function (response) {
        const { authorization } = response.headers
        if (authorization) {
            localStorage.setItem('token', authorization)
        }

        return response
    },
    function (error) {
        if (error.response && error.response.status === 401) {
            // 在这里执行处理 token 过期的逻辑，例如重新登录或刷新 token
            // 例如，您可以向用户显示一个提示，要求重新登录
            localStorage.removeItem('token')
            router.push('/login').then((r) => alert('登录已过期，请重新登录'))
        }
        if (error.code === 'ECONNABORTED') {
            alert('请求超时')
        } else if (error.response) {
            alert('请求超时')
            console.error('服务器错误:', error.response.data)
        } else {
            alert('请求超时')
            console.error('网络错误:', error.message)
        }
        return Promise.reject(error)
    },
)
